# author Basui
# 2022/6/6 16:11
stuInfo = []


class Student:
    def main(self):
        while True:
            self.printMenu()  # 打印菜单栏
            key = int(input('请输入功能对应的数字：'))
            if key == 1:
                self.addInfo()  # 添加学生信息
            elif key == 2:
                self.delInfo()  # 删除学生信息
            elif key == 3:
                self.modifystuInfo()  # 修改学生信息
            elif key == 4:
                self.showstuInfo()  # 查询学生所有信息
            elif key == 5:  # 退出系统
                quitConfirm = input('真的要退出吗？（Yes or No）：')
                if quitConfirm == 'Yes':
                    break  # 结束循环
                else:
                    print('输入有误，请重新输入')

    # 打印菜单栏
    def printMenu(self):
        print('=' * 30)
        print('学生信息管理系统')
        print('1.添加学生信息')
        print('2.删除学生信息')
        print('3.修改学生信息')
        print('4.查询所有学生信息')
        print('5.退出系统')
        print('=' * 30)

    # 添加学生信息
    def addInfo(self):
        newname = input('请输入学生的姓名:')
        newsex = input('请输入学生的性别:')
        newphone = input('请输入学生的电话号码:')
        # 字典 key value
        newInfo = {}
        newInfo['name'] = newname
        newInfo['sex'] = newsex
        newInfo['phone'] = newphone
        stuInfo.append(newInfo)

    # 删除学生信息
    def delInfo(self):
        delNum = int(input('请输入要删除的学生编号：')) - 1
        del stuInfo[delNum]

    # 修改学生信息
    def modifystuInfo(self):
        stuId = int(input('请输入要修改的学生编号：')) - 1
        newname = input('输入修改后学生的名字:')
        newsex = input('输入修改后学生的性别:')
        newphone = input('输入修改后学生的号码:')
        stuInfo[stuId]['name'] = newname
        stuInfo[stuId]['sex'] = newsex
        stuInfo[stuId]['phone'] = newphone

    # 查询所有学生信息
    def showstuInfo(self):
        print('=' * 30)
        print('学生信息如下：')
        print('=' * 30)
        print('序号', '姓名', '性别', '电话号码')
        i = 1
        for tempInfo in stuInfo:
            print('%d  %s  %s  %s' % (i, tempInfo['name'], tempInfo['sex'], tempInfo['phone']))
            i += 1


s = Student()
s.main()
